package com.zmn.plat.persistence.interfaces.product.guarantee;

import com.zmn.plat.model.entity.category.ServCategAndCategTwoQuery;
import com.zmn.plat.model.entity.product.guarantee.ProductGuarantee;
import com.zmn.plat.model.entity.product.guarantee.ProductGuaranteeQuery;
import com.zmn.plat.model.vo.product.ShowProductIdVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;



/**
 * 产品保障管理
 * 
 * @author linfeng
 *
 * @since 2020-03-17 10:16:02
 */
public interface ProductGuaranteeDao {

    /**
     * 查询
     * @param productGuaranteeId ID
     * @return
     */
    ProductGuarantee findByKey(Integer productGuaranteeId);

    /**
     * 根据产品ID查询
     * @param productId
     * @return
     */
    ProductGuarantee findByProductId(Integer productId);

    /**
     * 根据产品ID集合查询
     *
     * @param productIdList
     * @return
     */
    List<ProductGuarantee> listByProductIds(@Param("productIdList") List<Integer> productIdList);

    /**
     * 分页搜索
     * @param query 条件
     * @return 列表
     */
    List<ProductGuarantee> listPageByQuery(ProductGuaranteeQuery query);

    /**
     * 搜索
     * @param query 条件
     * @return
     */
    List<ProductGuarantee> listByQuery(ProductGuaranteeQuery query);

    /**
     * 所有数据
     * @return
     */
    List<ProductGuarantee> listAll();

    /**
     * 产品保障信息和产品对应关系
     * @return
     */
    List<ShowProductIdVO> listConfigGuaranteeProductIdByCategTwoQuery(List<ServCategAndCategTwoQuery> categIds);

    /**
     * 统计
     * @param query 条件
     * @return
     */
    Integer countByQuery(ProductGuaranteeQuery query);
    /**
     * 更新
     * @param productGuarantee
     * @return
     */
    Integer updateByKey(ProductGuarantee productGuarantee);

    /**
     * 跟怒产品id批量修改
     * @param updateProductGuaranteeProductIds 产品ID
     * @param updateGuarantee 待修改的信息
     * @return
     */
    Integer updateByProductIds(@Param("list") List<Integer> updateProductGuaranteeProductIds, @Param("guarantee") ProductGuarantee updateGuarantee);

    /**
     * 插入
     * @param productGuarantee
     * @return
     */
    Integer insert(ProductGuarantee productGuarantee);

    /**
     * 批量插入
     * @param addProductGuaranteeList
     * @return
     */
    Integer insertBatch(@Param("list") List<ProductGuarantee> addProductGuaranteeList);

    /**
     * 删除
     * @param productGuaranteeId ID
     * @return
     */
    Integer deleteByKey(Integer productGuaranteeId);

}
